package com.pb.metadata.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 数据源管理
 * @author liaohaoyuan
 * @date 20210301
 */
@Mapper
@Repository
public interface DataSourceMapper {

    /**
     * 查询分页数据
     * @param paramMap
     * @return
     */
    List<Map<String, Object>> select(Map<String, Object> paramMap);

    /**
     * 查询应用标识
     * @param paramMap
     * @return
     */
    //List<Map<String,Object>> getAppIdList(Map<String,Object> paramMap);

    /**
     * 获取数据源类型
     * @return
     */
    List<Map<String,Object>> getDataSourceType();

    /**
     * 获取物理表类型
     * @param paramMap
     * @return
     */
    List<Map<String,Object>> getPhysicaTableTypeList(Map<String,Object> paramMap);

    /**
     * 获取数据源用途
     * @return
     */
    List<Map<String,Object>> getDatasourceUse();

    /**
     * 获取数据库用户
     * @param paramMap
     * @return
     */
    List<Map<String,Object>> getDatabaseUserList(Map<String,Object> paramMap);

    /**
     * 数据源主表保存
     * @param paramMap
     * @return
     */
    Integer insert(Map<String,Object> paramMap);

    /**
     * 修改数据源
     * @param paramMap
     * @return
     */
    Integer update(Map<String,Object> paramMap);

    /**
     * 批量逻辑删除数据源
     * @param list
     */
    void  deleteBatch(List<String> list);

    /**
     * 启用OR停用
     * @param paramMap
     */
    void  startOrStop(Map<String,Object> paramMap);

    /**
     * 锁定OR提交
     * @param paramMap
     */
    void  lockouts(Map<String,Object> paramMap);

    /**
     * 查询数据库用户
     * @param DatabaseUserId
     * @return
     */
    String getDatabaseUserName(@Param("DatabaseUserId") String DatabaseUserId);

    List<Map<String,Object>> selUUID(String columnId);

    List<Map<String,Object>> colList(Map<String,Object> paramMap);

    /**
     * 同步字段
     * @param paramMap
     * @return
     */
    Integer insertParamColumn(Map<String,Object> paramMap);

    /**
     * 删除数据源字段
     * @param paramMap
     */
    void  delParamDatasourceColumn(Map<String,Object> paramMap);

    /**
     * 同步数据源字段
     * @param paramMap
     * @return
     */
    Integer insertParamDatasourceColumn(Map<String,Object> paramMap);

    /**
     * 获取配置表中左表数据
     * @param paramMap
     * @return
     */
    List<Map<String,Object>> getLeftTableData(Map<String,Object> paramMap);

    /**
     * 获取字段类型
     * @return
     */
    List<Map<String,Object>> getFieldTypeDatas();

    /**
     * 获取配置表右表数据
     * @param paramMap
     * @return
     */
    List<Map<String,Object>> getRightTableData(Map<String,Object> paramMap);

    /**
     * 修改数据源字段
     * @param map
     */
    void updataTable(Map<String,Object> map);

    /**
     * 修改字段管理
     * @param map
     */
    //void updataParamColumn(Map<String,Object> map);

    /**
     * 获取导出数据
     * @param paramMap
     * @return
     */
    List<Map<String,Object>> getLeadingOutsData(Map<String,Object> paramMap);

    /**
     * 导出字段数据
     * @param paraMap
     * @return
     */
    List<Map<String,Object>> getParamDatasourceColumn(Map<String,Object>paraMap);

    /**
     * 保存数据源字段
     * @param paramMap
     */
    void  insertTabledata(Map<String,Object> paramMap);

    /**
     * 批量导入数据源
     * @param list
     */
    void addParamDatasource(List<Map<String,Object>> list);

    /**
     * 批量修改数据源
     * @param list
     */
    void updateParamDatasource(List<Map<String,Object>> list);

    /**
     * 删除配置表数据
     * @param list
     */
    void  daleteTableData(List<String> list);

    /**
     * 查询数据源字段
     * @param paramMap
     * @return
     */
    List<Map<String,Object>> getSourceColumnId(Map<String,Object> paramMap);

    /**
     * 批量导入数据源字段
     * @param data
     */
    void addParamDatasourceColumn(List<Map<String,Object>> data);

    /**
     * 批量修改数据源字段
     * @param data
     */
    void updateParamDatasourceColumn(List<Map<String,Object>> data);

    /**
     * 查询数据源
     * @param paraMap
     * @return
     */
    String getDatasourceId(Map<String,Object> paraMap);

    /**
     * 所有数据源
     * @param databaseName
     * @param databaseUser
     * @param databaseObjectName
     * @return
     */
    List<Map<String,Object>> getDataSourceList(@Param("databaseName") String databaseName,@Param("databaseUser") String databaseUser,@Param("databaseObjectName") String databaseObjectName);

    /**
     * 数据库用户
     * @param databaseName
     * @param databaseUser
     * @return
     */
    String getdatabaseUserData(@Param("databaseName") String databaseName,@Param("databaseUser") String databaseUser);

}
